package cc.rengu.oltp.service.common.dao;


import cc.rengu.oltp.service.common.entity.MchntOrderInfo;
import cc.rengu.oltp.service.common.entity.StatisTransAmt;

import java.util.List;

/**
 * 商户订单表操作接口
 * Created by 王成 on 2020/2/6
 */
public interface MchntOrderInfoMapper {
    /**
     * 登记商户订单信息
     *
     * @param mchntOrderInfo 商户订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertMchntOrderInfo(MchntOrderInfo mchntOrderInfo) throws Exception;

    /**
     * 根据主键更新商户订单信息
     *
     * @param mchntOrderInfo 商户订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateMchntOrderInfoByPrimaryKey(MchntOrderInfo mchntOrderInfo) throws Exception;

    /**
     * 根据主键更新商户订单状态
     *
     * @param mchntOrderInfo 商户订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateMchntOrderStatusByPrimaryKey(MchntOrderInfo mchntOrderInfo) throws Exception;

    /**
     * 根据商户订单号更新商户订单信息(多法人标识、交易日期、交易时间、商户订单号、商户号)
     *
     * @param mchntOrderInfo 商户订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateMchntOrderInfoByMchntOrderId(MchntOrderInfo mchntOrderInfo) throws Exception;

    /**
     * 根据主键查询商户订单信息
     *
     * @param instId    多法人标识
     * @param sysSeqNum 系统流水号
     * @param mchntNo   商户号
     * @return 商户订单信息
     * @throws Exception 异常
     */
    MchntOrderInfo selectMchntOrderInfoByPrimaryKey(String instId, String sysSeqNum, String mchntNo) throws Exception;

    /**
     * 根据系统流水号查询商户订单信息
     *
     * @param instId    多法人标识
     * @param sysSeqNum 系统流水号
     * @return 商户订单信息
     * @throws Exception 异常
     */
    List<MchntOrderInfo> selectMchntOrderInfoBySysSeqNum(String instId, String sysSeqNum) throws Exception;

    /**
     * 根据商户号查询商户订单信息
     *
     * @param instId    多法人标识
     * @param mchntNo   商户号
     * @param beginDate 查询开始日期
     * @param endDate   查询截止日期
     * @return 商户订单信息
     * @throws Exception 异常
     */
    List<MchntOrderInfo> selectMchntOrderInfoByMchntNo(String instId, String mchntNo, String beginDate, String endDate) throws Exception;

    /**
     * 根据商户号及交易日期统计商户各类交易类型的交易总金额
     *
     * @param instId  多法人标识
     * @param mchntNo 商户号
     * @param txnDate 交易日期
     * @return 商户交易统计信息
     * @throws Exception 异常
     */
    List<StatisTransAmt> statisMchntTransAmtByTransType(String instId, String mchntNo, String txnDate) throws Exception;

    /**
     * 基于原交易流水号查询商户订单信息
     *
     * @param instId        多法人标识
     * @param origSysSeqNum 原交易流水号
     * @return 商户订单信息
     * @throws Exception 异常
     */
    List<MchntOrderInfo> selectMchntOrderInfoByOrigSysSeqNum(String instId, String origSysSeqNum) throws Exception;
}
